MongoDB-তে বড় ফাইল যেমন ইমেজ, ভিডিও বা অন্যান্য ডকুমেন্ট স্টোর করার জন্য GridFS ব্যবহৃত হয়। GridFS MongoDB-র একটি ফাইল সিস্টেম, যা বড় ফাইলগুলিকে ছোট অংশে বিভক্ত করে সংরক্ষণ করে এবং পরবর্তীতে সেই অংশগুলি পুনরায় একত্রিত করে ব্যবহারকারীদের কাছে পাঠায়।
Java MongoDB ড্রাইভার ব্যবহার করে GridFS এর মাধ্যমে ফাইল ইনসার্ট এবং রিট্রিভ করার পদ্ধতি এখানে আলোচনা করা হলো।
GridFS এর মাধ্যমে ফাইল ইনসার্ট করা
১. প্রয়োজনীয় ডিপেনডেন্সি ইনস্টল করা
GridFS ব্যবহারের জন্য প্রথমে MongoDB Java Driver এবং GridFS ডিপেনডেন্সি আপনার প্রকল্পে যোগ করতে হবে।
Maven Dependency:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-gridfs</artifactId>
<version>4.4.0</version>
</dependency>
Gradle Dependency:
implementation 'org.mongodb:mongo-java-driver:4.4.0'
implementation 'org.mongodb:mongo-gridfs:4.4.0'
২. MongoDB সার্ভারের সাথে সংযোগ স্থাপন
MongoDB সার্ভারের সাথে সংযোগ স্থাপন করতে MongoClient ব্যবহার করা হয়:
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoDatabase;
MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017");
MongoClient mongoClient = new MongoClient(uri);
MongoDatabase database = mongoClient.getDatabase("myDatabase");
৩. GridFSBucket তৈরি করা
ফাইল স্টোর করার জন্য GridFSBucket তৈরি করতে হবে:
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
GridFSBucket gridFSBucket = GridFSBuckets.create(database);
৪. ফাইল ইনসার্ট করা
ফাইল ইনসার্ট করতে, GridFSUploadStream ব্যবহার করা হয়। ফাইলের ইনপুট স্ট্রিম প্রদান করে GridFS এর মাধ্যমে ফাইল আপলোড করা হয়।
import com.mongodb.client.gridfs.GridFSUploadStream;
import java.io.FileInputStream;
import java.io.IOException;
try (FileInputStream fileStream = new FileInputStream("path_to_your_file")) {
GridFSUploadStream uploadStream = gridFSBucket.openUploadStream("file_name");
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileStream.read(buffer)) != -1) {
uploadStream.write(buffer, 0, bytesRead);
}
uploadStream.close(); // ক্লোজ করতে হবে
} catch (IOException e) {
e.printStackTrace();
}
এখানে openUploadStream() পদ্ধতি ফাইলটি MongoDB তে আপলোড করার জন্য একটি স্ট্রিম খোলে। একবার ফাইল আপলোড হয়ে গেলে, uploadStream.close() কল করা হয়।
GridFS এর মাধ্যমে ফাইল রিট্রিভ করা
GridFS থেকে ফাইল রিট্রিভ করতে, আপনি GridFSDownloadStream ব্যবহার করতে পারেন। এই পদ্ধতিতে ফাইলটি MongoDB থেকে রিট্রিভ করা হয় এবং তা লোকাল সিস্টেমে সংরক্ষিত হয়।
১. ফাইল রিট্রিভ করা
import com.mongodb.client.gridfs.GridFSDownloadStream;
import java.io.FileOutputStream;
import java.io.IOException;
try (GridFSDownloadStream downloadStream = gridFSBucket.openDownloadStream("file_name");
FileOutputStream fileOutputStream = new FileOutputStream("path_to_save_file")) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = downloadStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
}
এখানে, openDownloadStream() পদ্ধতিটি MongoDB থেকে ফাইল রিট্রিভ করে। তারপর FileOutputStream ব্যবহার করে সেই ফাইলটি আপনার লোকাল সিস্টেমে সংরক্ষণ করা হয়।
GridFS এর সুবিধা
১. বড় ফাইলের জন্য উপযুক্ত
MongoDB সাধারণত ছোট ডেটা স্টোর করতে ব্যবহৃত হয়, তবে GridFS বড় ফাইলের জন্য আদর্শ, কারণ এটি ফাইলটিকে ছোট ছোট অংশে (chunks) বিভক্ত করে এবং একত্রিত করতে পারে।
২. সহজ রিট্রিভাল এবং আপলোড
GridFS ব্যবহার করে MongoDB ডেটাবেসে ফাইল আপলোড এবং রিট্রিভ করা সহজ এবং দক্ষ। এটি ফাইলের অপটিমাইজড স্টোরেজ এবং ব্যবস্থাপনা নিশ্চিত করে।
৩. পারফরম্যান্স অপটিমাইজেশন
GridFS ডেটা স্টোরেজের ক্ষেত্রে পারফরম্যান্স অপটিমাইজেশন প্রদান করে, বিশেষ করে যখন ফাইলগুলির সাইজ খুব বড় হয় এবং এগুলোর মধ্যে বড় পরিমাণ ডেটা থাকে।
GridFS ব্যবহার করে আপনি Java MongoDB ড্রাইভার দিয়ে MongoDB ডেটাবেসে ফাইল ইনসার্ট এবং রিট্রিভ করতে পারবেন। এটি MongoDB-র এক শক্তিশালী ফিচার যা বড় ফাইলের স্টোরেজ এবং ম্যানেজমেন্ট সহজ করে তোলে।
Read more